package office.document.core.domain;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.HashMap;
import java.util.Map;

/**
 * 文档信息
 *
 * @author: zhanglu
 * @date: 2023/8/3 16:38
 * @modify: 修改人信息, 修改内容 2023/8/3 16:38
 */
@Data
@Accessors(chain = true)
public class DocumentInfoDO {

    /**
     * 总页数
     */
    private Integer pageNumTotal;
    /**
     * 版本号
     */
    private String version;
    /**
     * 作者
     */
    private String author;
    /**
     * 创建者
     */
    private String creator;
    /**
     * 创建时间 yyyy-MM-dd HH:mm:ss.SSS
     */
    private String createDate;
    /**
     * 修改时间 yyyy-MM-dd HH:mm:ss.SSS
     */
    private String updateDate;
    /**
     * 标题
     */
    private String title;
    /**
     * 主题
     */
    private String subject;
    /**
     * 关键字
     */
    private String keywords;
    /**
     * 生产商
     */
    private String producer;
    /**
     * 元数据信息
     */
    private Map<String, String> metadata;
    /**
     * 属性值
     */
    private Map<String, Object> properties;

    /**
     * 加密信息
     */
    private Encryption encryption;

    public DocumentInfoDO(){
        this.metadata = new HashMap<>();
        this.properties = new HashMap<>();
    }

    /**
     * 加密信息
     */
    @Data
    public static class Encryption{
        /**
         * 版本
         */
        private int version;
        /**
         * 长度
         */
        private int length;
        /**
         * 密钥
         */
        private byte[] ownerEncryptionKey;
        /**
         * 密钥
         */
        private byte[] ownerKey;
        /**
         * 权限
         */
        private int permissions;
        /**
         * 群仙
         */
        private byte[] perms;
        /**
         * 修订
         */
        private int revision;
        /**
         * 密钥
         */
        private byte[] userKey;
        /**
         * 密钥
         */
        private byte[] userEncryptionKey;
        /**
         * 接收长度
         */
        private int recipientsLength;
        /**
         * 过滤器名称
         */
        private String filter;
        /**
         * 子过滤器名称
         */
        private String subFilter;
    }

}
